package com.itheima;

import org.springframework.data.redis.connection.DataType;
import org.springframework.data.redis.core.*;
import org.springframework.data.redis.core.query.SortQuery;
import org.springframework.data.redis.core.script.RedisScript;
import org.springframework.data.redis.core.types.RedisClientInfo;
import org.springframework.data.redis.hash.HashMapper;
import org.springframework.data.redis.serializer.RedisSerializer;

import java.io.Closeable;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;

public class MyRedisTemplate implements RedisOperations {

    private RedisTemplate redisTemplate;




    public MyRedisTemplate( RedisTemplate redisTemplate){
        this.redisTemplate = redisTemplate;
    }
    @Override
    public Object execute(RedisCallback action) {
        System.out.println("adafadssda");
        return redisTemplate.execute(action);
    }

    @Override
    public Object execute(SessionCallback session) {
        return null;
    }

    @Override
    public List<Object> executePipelined(RedisCallback action) {
        return null;
    }

    @Override
    public List<Object> executePipelined(RedisCallback action, RedisSerializer resultSerializer) {
        return null;
    }

    @Override
    public List<Object> executePipelined(SessionCallback session) {
        return null;
    }

    @Override
    public List<Object> executePipelined(SessionCallback session, RedisSerializer resultSerializer) {
        return null;
    }

    @Override
    public Object execute(RedisScript script, List keys, Object... args) {
        return null;
    }

    @Override
    public Object execute(RedisScript script, RedisSerializer argsSerializer, RedisSerializer resultSerializer, List keys, Object... args) {
        return null;
    }

    @Override
    public Closeable executeWithStickyConnection(RedisCallback callback) {
        return null;
    }

    @Override
    public Boolean copy(Object sourceKey, Object targetKey, boolean replace) {
        return null;
    }

    @Override
    public Boolean hasKey(Object key) {
        return null;
    }

    @Override
    public Long countExistingKeys(Collection keys) {
        return null;
    }

    @Override
    public Boolean delete(Object key) {
        return null;
    }

    @Override
    public Long delete(Collection keys) {
        return null;
    }

    @Override
    public Boolean unlink(Object key) {
        return null;
    }

    @Override
    public Long unlink(Collection keys) {
        return null;
    }

    @Override
    public DataType type(Object key) {
        return null;
    }

    @Override
    public Set keys(Object pattern) {
        return null;
    }

    @Override
    public Cursor scan(ScanOptions options) {
        return null;
    }

    @Override
    public Object randomKey() {
        return null;
    }

    @Override
    public void rename(Object oldKey, Object newKey) {

    }

    @Override
    public Boolean renameIfAbsent(Object oldKey, Object newKey) {
        return null;
    }

    @Override
    public Boolean expire(Object key, long timeout, TimeUnit unit) {
        return null;
    }

    @Override
    public Boolean expireAt(Object key, Date date) {
        return null;
    }

    @Override
    public Boolean persist(Object key) {
        return null;
    }

    @Override
    public Boolean move(Object key, int dbIndex) {
        return null;
    }

    @Override
    public byte[] dump(Object key) {
        return new byte[0];
    }

    @Override
    public void restore(Object key, byte[] value, long timeToLive, TimeUnit unit, boolean replace) {

    }

    @Override
    public Long getExpire(Object key) {
        return null;
    }

    @Override
    public Long getExpire(Object key, TimeUnit timeUnit) {
        return null;
    }

    @Override
    public List sort(SortQuery query) {
        return null;
    }

    @Override
    public Long sort(SortQuery query, Object storeKey) {
        return null;
    }

    @Override
    public void watch(Object key) {

    }

    @Override
    public void watch(Collection keys) {

    }

    @Override
    public void unwatch() {

    }

    @Override
    public void multi() {

    }

    @Override
    public void discard() {

    }

    @Override
    public List<Object> exec() {
        return null;
    }

    @Override
    public List<RedisClientInfo> getClientList() {
        return null;
    }

    @Override
    public void killClient(String host, int port) {

    }

    @Override
    public void slaveOf(String host, int port) {

    }

    @Override
    public void slaveOfNoOne() {

    }

    @Override
    public void convertAndSend(String destination, Object message) {

    }

    @Override
    public ClusterOperations opsForCluster() {
        return null;
    }

    @Override
    public GeoOperations opsForGeo() {
        return null;
    }

    @Override
    public BoundGeoOperations boundGeoOps(Object key) {
        return null;
    }

    @Override
    public HyperLogLogOperations opsForHyperLogLog() {
        return null;
    }

    @Override
    public ListOperations opsForList() {
        return null;
    }

    @Override
    public BoundListOperations boundListOps(Object key) {
        return null;
    }

    @Override
    public SetOperations opsForSet() {
        return null;
    }

    @Override
    public BoundSetOperations boundSetOps(Object key) {
        return null;
    }

    @Override
    public ValueOperations opsForValue() {
        return null;
    }

    @Override
    public BoundValueOperations boundValueOps(Object key) {
        return null;
    }

    @Override
    public ZSetOperations opsForZSet() {
        return null;
    }

    @Override
    public BoundZSetOperations boundZSetOps(Object key) {
        return null;
    }

    @Override
    public RedisSerializer<?> getKeySerializer() {
        return null;
    }

    @Override
    public RedisSerializer<?> getValueSerializer() {
        return null;
    }

    @Override
    public RedisSerializer<?> getHashKeySerializer() {
        return null;
    }

    @Override
    public RedisSerializer<?> getHashValueSerializer() {
        return null;
    }

    @Override
    public BoundStreamOperations boundStreamOps(Object key) {
        return null;
    }

    @Override
    public StreamOperations opsForStream(HashMapper hashMapper) {
        return null;
    }

    @Override
    public StreamOperations opsForStream() {
        return null;
    }

    @Override
    public BoundHashOperations boundHashOps(Object key) {
        return null;
    }

    @Override
    public HashOperations opsForHash() {
        return null;
    }

    @Override
    public List<Object> exec(RedisSerializer valueSerializer) {
        return null;
    }

    @Override
    public List sort(SortQuery query, BulkMapper bulkMapper, RedisSerializer resultSerializer) {
        return null;
    }

    @Override
    public List sort(SortQuery query, BulkMapper bulkMapper) {
        return null;
    }

    @Override
    public List sort(SortQuery query, RedisSerializer resultSerializer) {
        return null;
    }
}
